import org.apache.commons.lang.StringUtils;

public class URLInfo {

	/**
	 * デフォルトコンストラクタ
	 */
	public URLInfo() {
		// TODO 自動生成されたコンストラクター・スタブ
	}

	/**
	 * コンストラクタ
	 * @param protocol プロトコル
	 * @param host ホスト
	 * @param port リッスンポート
	 * @param appName リッスンアプリ名
	 * @param appPath アプリケーションパス
	 */
	public URLInfo(String protocol, String host, String port, String appName, String appPath) {
		this.protocol = protocol;
		this.host = host;
		this.port = port;
		this.appName = appName;
		this.appPath = appPath;
	}

	/** Protocol */
	private String protocol = null;

	/** Host */
	private String host = null;

	/** Port */
	private String port = null;

	/** AppName */
	private String appName = null;

	/** AppPath */
	private String appPath = null;

	public String getProtocol() {
		return protocol;
	}

	public void setProtocol(String protocol) {
		this.protocol = protocol;
	}

	public String getHost() {
		return host;
	}

	public void setHost(String host) {
		this.host = host;
	}

	public String getPort() {
		return port;
	}

	public void setPort(String port) {
		this.port = port;
	}

	public String getAppName() {
		return appName;
	}

	public void setAppName(String appName) {
		this.appName = appName;
	}

	public String getAppPath() {
		return appPath;
	}

	public void setAppPath(String appPath) {
		this.appPath = appPath;
	}

	private final String COLON = ":";
	private final String SLASH = "/";

	/**
	 * URLを返す
	 * @return URL文字列
	 */
	public String toUrlString() {

		StringBuffer sb = new StringBuffer(2000);
		sb.append(getProtocol());
		sb.append(COLON + SLASH + SLASH);
		sb.append(getHost());
		// Portがなければappendしない
		if (StringUtils.isNotEmpty(getPort())) {
			sb.append(COLON);
			sb.append(getPort());
		}
		if (StringUtils.isNotEmpty(getAppName())) {
			sb.append(SLASH);
			sb.append(getAppName());
		}
		if (StringUtils.isNotEmpty(getAppPath())) {
			sb.append(SLASH);
			sb.append(getAppPath());
		}

		return sb.toString();
	}
}
